单页应用 push => 打包构建 => 发布 => 接oss => 自动刷新cdn => 消息通知
September 09, 2020
首先,我在gitlab 上创建的 一个单页项目,也可以通过上面的 fe-cli 来通过模版创建
项目地址如下: https://gitlab.com/gitbookdemo/vue-signle-page
我们主要关注 .gitlab-ci.yml
image: node:latest
# variables 是定义环境变量,可以在直接获取
variables:
TEST_PROJECT_NAME: "hucheng"
# stages 定义 执行步骤,包含了需要执行的job,类似第一步干嘛,第二步干嘛,接着干嘛
stages:
- install_deps
- build
- deploy
# install_deps 就是job,job下面的 stage 字段和上面一一对应起来
install_deps:
stage: install_deps
only: # 这里的 only 标记 在下面3个分支下面,push代码后,执行当前job,,only 支持 branch,tag,change,正则
- develop
- preview
- master
script: # script 就是你要执行的脚本了
- echo $TEST_PROJECT_NAME && npm install
build:
stage: build
only:
- develop
- preview
- master
artifacts: # artifacts 标记,当前job 执行完成后,在 gitalb 网页可以下载的文件,会出现个下载按钮,可以下载这个目录
paths:
- ./dist
script:
- npm run build
deploy:
stage: deploy
only:
- develop
- preview
- master
script:
- echo '开始上传到 oss'
# 这里是发布相关的脚本,建议通过这种远程获取的方式,做到热更新,如果放在当前项目目录每个改动起来不方便 https://gitlab.com/gitbookdemo/fe-script
- curl https://gitlab.com//api/v4/projects/18688576/repository/files/deploy.js/raw?ref=master | node "$type" dist
之前的打包构建已经说过,这里我们关注最下面的 deploy 这个脚本主要是 把 dist 目录上传到 阿里云oss,这样我们就完成了个最小闭环
这里需要强调的是 ,我把 deploy.js 通过 api 的方式获取,这样的好处就是,我们可以动态的更改 发布的逻辑,还记得我之前讲的 soucemap 那块么,这样某天需要处理soucemap 我们就可以添加一处,所有的项目就生效了
代码 push 后 我们可以去 gitlab 上看看
https://gitlab.com/gitbookdemo/vue-signle-page/pipelines


这样我们整个流程就处理完毕,完成了 push => 打包构建 => 发布 => 接oss => 自动刷新cdn => 消息通知 一条龙服务,大大减少了工作量